package com.zbkj.service.dividend.service;


import com.zbkj.common.model.order.Order;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 用户分红服务接口
 */
public interface DividendPoolService {

    /**
     * 订单支付时执行分红
     */
    boolean executeOrderDividend(Order order);

    /**
     * 计算订单分红金额
     */
    Map<String, Object> calculateOrderDividend(BigDecimal orderAmount);

    /**
     * 执行分红到用户佣金字段
     */
    boolean distributeDividendToUsers(BigDecimal totalAmount, Map<Integer, BigDecimal> userDividendMap);

    /**
     * 获取各分红池用户数量
     */
    Map<Integer, Integer> getPoolUserCount();

    /**
     * 获取分红池配置及用户信息
     */
    List<Map<String, Object>> getPoolConfigWithUsers();

    /**
     * 查询用户累计分红金额
     */
    BigDecimal getUserTotalDividend(Integer userId);

    /**
     * 批量执行分红
     */
    boolean batchExecuteDividend(List<Order> orders);
}